/*
 * SPDX-License-Identifier: Apache-2.0
 * Copyright Red Hat Inc. and Hibernate Authors
 */
package org.hibernate.testing.orm.junit;

import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.extension.ExtendWith;

/// Applies extensions needed for managing a ServiceRegistry as part of the test lifecycle.
/// Used in combination with [BootstrapServiceRegistryProducer] /
/// [ServiceRegistryProducer] as an alternative to [@BootstrapServiceRegistry][BootstrapServiceRegistry] /
/// [@ServiceRegistry][ServiceRegistry].
///
/// @author Steve Ebersole
@Inherited
@Retention( RetentionPolicy.RUNTIME )
@Target({ElementType.TYPE, ElementType.METHOD})

@TestInstance( TestInstance.Lifecycle.PER_CLASS )

@ExtendWith( FailureExpectedExtension.class )
@ExtendWith( ServiceRegistryExtension.class )
@ExtendWith( ServiceRegistryParameterResolver.class )
public @interface ServiceRegistryFunctionalTesting {
}
